// package com.liangtian.mdm.material.controller;
//
// import com.alibaba.fastjson.JSONObject;
// import com.github.pagehelper.PageInfo;
// import com.liangtian.mdm.activiti.api.WorkFlowService;
// import com.liangtian.mdm.activiti.api.entity.RunState;
// import com.liangtian.mdm.activiti.api.entity.TjForm;
// import com.liangtian.mdm.base.controller.BaseController;
// import com.liangtian.mdm.base.utils.ResultObject;
// import com.liangtian.mdm.base.utils.ShiroSessionUtils;
// import com.liangtian.mdm.dm.common.util.RequestUtils;
// import com.liangtian.mdm.dm.jsp.common.ExcelUtil;
// import com.liangtian.mdm.dm.jsp.dao.JspActionDao;
// import com.liangtian.mdm.material.dao.WlwlUpdateDao;
// import com.liangtian.mdm.material.model.*;
// import com.liangtian.mdm.material.service.*;
// import com.liangtian.mdm.system.log.SysLogUtil;
// import com.liangtian.mdm.system.log.model.SysLogEnum;
// import com.liangtian.mdm.system.log.service.SysLogService;
// import com.liangtian.mdm.system.business.service.SysBusinessService;
// import com.liangtian.mdm.system.sysFile.model.SysFileUpdate;
// import com.liangtian.mdm.system.sysFile.service.SysFileService;
// import com.liangtian.mdm.system.sysFile.service.SysFileUpdateService;
// import com.liangtian.mdm.system.parameter.service.SysParameterService;
// import com.liangtian.mdm.system.user.model.SysUser;
// import com.liangtian.mdm.system.user.util.ExcelImport;
// import com.liangtian.mdm.util.ConstantBean;
// import com.liangtian.mdm.util.ExportUtil;
// import com.liangtian.mdm.util.IoUtil;
// import com.liangtian.mdm.util.TemplateName;
// import org.apache.poi.EncryptedDocumentException;
// import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
// import org.apache.poi.ss.usermodel.Cell;
// import org.apache.poi.ss.usermodel.Sheet;
// import org.apache.poi.ss.usermodel.Workbook;
// import org.springframework.beans.factory.annotation.Autowired;
// import org.springframework.stereotype.Controller;
// import org.springframework.util.FileCopyUtils;
// import org.springframework.web.bind.annotation.RequestBody;
// import org.springframework.web.bind.annotation.RequestMapping;
// import org.springframework.web.bind.annotation.RequestMethod;
// import org.springframework.web.bind.annotation.ResponseBody;
// import org.springframework.web.multipart.MultipartFile;
// import org.springframework.web.multipart.MultipartHttpServletRequest;
//
// import javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
// import java.io.File;
// import java.io.IOException;
// import java.text.SimpleDateFormat;
// import java.util.*;
//
// @Controller
// @RequestMapping("/wlwlUpdateController")
// public class WlwlUpdateController extends BaseController {
//
//     @Autowired
//     private WlwlUpdateService wlwlUpdateService;
//     @Autowired
//     private SysParameterService sysParameterService;
//     @Autowired
//     private WlLbService wlLbService;
//     @Autowired
//     private WlLbmbService wlLbmbService;
//     @Autowired
//     private WlbmLbJldwService wlbmLbJldwService;
//     @Autowired
//     private WlLbmbtzlService wlLbmbtzlService;
//     @Autowired
//     private JspActionDao jspActionDao;
//     @Autowired
//     private WlwlUpdateDao wlwlUpdateDao;
//     @Autowired
//     private SysFileService sysFileService;
//     @Autowired
//     private SysFileUpdateService sysFileUpdateService;
//     @Autowired
//     private SysBusinessService sysBusinessService;
//     // 日志服务接口对象
//     @Autowired
//     SysLogService sysLogServiceImpl;
//
//     // Session中保存的当前登录用户的信息
//     // @Value("${ConstantBean.CURRENT_SESSION_USER}")
//     // private String ConstantBean.CURRENT_SESSION_USER;
//
//     private ExcelImport excelImport = new ExcelImport();
//
//     @Autowired
//     private WlwlService wlwlService;
//     @Autowired
//     private WlwlFieldService wlwlFieldService;
//     @Autowired
//     private WorkFlowService workFlowService;
//
//     @ResponseBody
//     @RequestMapping(value = "/weiHuWlwlUpdatePage", method = RequestMethod.POST)
//     @SuppressWarnings({"rawtypes", "unchecked"})
//     public JSONObject weiHuWlwlUpdatePage(HttpServletRequest request, WlwlUpdate wlwl) {
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         Map paramMap = RequestUtils.paramToMap(request, WlwlUpdate.class, false);
//         paramMap.put("creator_id", user.getUserId());
//         PageInfo pageInfo = wlwlUpdateService.weiHuWlwlUpdatePage(paramMap);
//         List l = pageInfo.getList();
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", l);
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     @SuppressWarnings("rawtypes")
//     @RequestMapping(value = "/wlwlbianGeng", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject wlwlbianGeng(HttpServletRequest request) {
//         Map<String, Object> paramMap = RequestUtils.paramToMap(request);
//         String lbbms = (String) paramMap.get("lbbms");
//         if (!StringUtils.isEmpty(lbbms))
//             paramMap.put("lbbmArray", StringUtil.toList(lbbms));
//         String qcs = (String) paramMap.get("qcs");
//         if (!StringUtils.isEmpty(qcs))
//             paramMap.put("qcArray", spaceToList(qcs));
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         paramMap.put("creator_id", user.getUserId());
//         PageInfo pageInfo = wlwlUpdateService.wlwlbianGeng(paramMap);
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", pageInfo.getList());// 总行数
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     /**
//      * 转向正式物料编辑页
//      *
//      * @return
//      * @author jiangyh
//      * @date 2018-01-17
//      */
//     @RequestMapping(value = "/toWlwlUpdateEdit", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject toWlwlUpdateEdit(HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         String id = request.getParameter("id");
//         String template_id = request.getParameter("template_id");
//
//         WlwlUpdate wlwlUpdate = wlwlUpdateService.getWlwlUpdateById(id);
//         WlLb wllb = new WlLb();
//         wllb.setLbbm(wlwlUpdate.getLbbm());
//         WlLb wlLb = wlLbService.getWlLbById(wllb);
//         List<WlLbmb> templates = wlLbmbService.getAllValidWlLbmbByLbbm(wlLb.getLbbm());// 类别模板数据
//         template_id = template_id == null ? wlwlUpdate.getWl_lbmb_id() : template_id;
//         WlLbmb cond_mb = new WlLbmb();
//         cond_mb.setId(template_id);
//         WlLbmb wlLbmb = wlLbmbService.getWlLbmbById(cond_mb);
//         jsonObject.put("wlwlUpdate", wlwlUpdate);
//         jsonObject.put("wlLb", wlLb);
//         jsonObject.put("templateList", templates);
//         jsonObject.put("currTemplate", wlLbmb);
//         return jsonObject;
//     }
//
//     /**
//      * 正式物料编辑页模板特征量加载
//      *
//      * @return
//      * @author jiangyh
//      * @date 2018-01-17
//      */
//     @RequestMapping(value = "/tzlTemplateEdit", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject tzlTemplateEdit(HttpServletRequest request) {
//         String lbbm = request.getParameter("lbbm");// 物料类别编码
//         String template_id = request.getParameter("template_id");// 物料模板id
//         String id = request.getParameter("id");
//         JSONObject jsonObject = new JSONObject();
//         if (!StringUtils.isEmpty(lbbm)) {
//             WlLb wllb = new WlLb();
//             wllb.setLbbm(lbbm);
//             WlLb wlLb = wlLbService.getWlLbById(wllb);
//             // 获取session中用户
//             SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//             // 类别计量单位
//             Map<String, Object> lbjldwcx = new HashMap<>();
//             lbjldwcx.put("lbbm", lbbm);
//             List<WlbmLbJldw> jldwList = wlbmLbJldwService.getWlbmLbJldwByCond2(lbjldwcx);
//
//             WlLbmb wlLbmb = null;
//             if (!StringUtils.isEmpty(template_id)) {
//                 WlLbmb mb = new WlLbmb();
//                 mb.setId(template_id);
//                 wlLbmb = wlLbmbService.getWlLbmbById(mb);
//                 // 模板特征量
//                 List<WlLbmbtzlDto> tzlList = wlLbmbtzlService.getWlLbmbtzlDtoListForApplyPage(template_id, false);
//                 // 模板特征量(lan)
//                 Map<String, Object> mbtzl_cond = new HashMap<>();
//                 mbtzl_cond.put("wl_lbmb_id", template_id);
//                 mbtzl_cond.put("lan", "en");
//                 List<WlLbmbtzl> tzlLanList = wlLbmbtzlService.getWlLbmbtzlLanListSimple(mbtzl_cond);
//
//                 jsonObject.put("wlLbmb", wlLbmb);
//                 jsonObject.put("tzlList", tzlList);
//                 jsonObject.put("tzlLanList", tzlLanList);
//             }
//
//             WlwlUpdate wlwlUpdate = wlwlUpdateService.getWlwlUpdateById(id);
//             Map<String, Object> cond = new HashMap<>();
//             cond.put("wl_update_id", id);
//             if (!StringUtils.isEmpty(template_id)) {
//                 List<WlwlTzlUpdate> wlwlTzlUpdateList = wlwlUpdateService.getWlwlTzlUpdate(cond);
//                 if (!StringUtils.isEmpty(wlwlTzlUpdateList)) {
//                     /*
//                      * Map<String, WlDrTzl> map = new HashMap<String,
//                      * WlDrTzl>(); for(WlDrTzl wlDrTzl : wlDrTzlList){
//                      * map.put(wlDrTzl.getWlLbmbtzlId(), wlDrTzl); }
//                      * jsonObject.put("wlDrTzlMap", map);
//                      */
//                     jsonObject.put("wlwlTzlUpdateList", wlwlTzlUpdateList);
//                 }
//             }
//
//             //jyh  -- 17-12-25 新增  查询系统参数systemCode 区分当前系统，用于物料配置字段的条件判断
//             String systemCode = sysParameterService.getSysParamValue("systemCode", "MDM");// 获取系统参数systemCode，如果返回值为空则默认返回值为"MDM"
//             jsonObject.put("systemCode", systemCode);
//
//             // 可配置物料字段
//             Map<String, Object> field_cond = new HashMap<>();
//             field_cond.put("sfbdxs", "1");
//             List<WlwlField> fieldList = wlwlFieldService.queryWlwlFieldByCond(field_cond);
//             filterField(fieldList, lbbm, wlLbmb, systemCode);
//             jsonObject.put("fieldList", fieldList);
//
//             // 附件信息
// 			/*SysBusiness sysb = new SysBusiness();
// 			sysb.setBusTable("WL_WL");
// 			sysb.setLimit("20");// 由于调用分页方法，该属性需要有值
// 			List<SysBusiness> bList = sysBusinessService.queryBusByContion(sysb).getList();// 查询业务类型
// 			String bus_id = bList.get(0).getBusId();// 业务类型*/
//             Map<String, Object> param = new HashMap<>();
//             param.put("updateId", id);
//             param.put("surveyType", "WL_WL");
//             List<SysFileUpdate> files = sysFileUpdateService.queryFileUpdateBySurvey(param);
//             if (!StringUtils.isEmpty(files))
//                 jsonObject.put("files", files);
//
//             jsonObject.put("wlwlUpdate", wlwlUpdate);
//             jsonObject.put("wlLb", wlLb);
//             jsonObject.put("user", user);
//             jsonObject.put("jldwList", jldwList);
//
//             // jyh -- 17-08-17新增(万达专有)
//             // 物料创建页面增加2个字段【轮胎认证】【ERP物料模版】已在物料动态配置字段中维护，前台页面需下拉列表展示
//             // 字段值维护在动态建模字典表中
//             //boolean flag = feild_WD(fieldList);
//             //jyh  -- 17-12-25 物料可配置字段的名字可以修改 ，改为通过系统参数来确定是不是万达系统
//             if ("WanDa".equals(systemCode)) {
//                 Map<String, Object> f_cond = new HashMap<>();
//                 f_cond.put("columns", "id,C_001");
//                 f_cond.put("tableName", "T_1828");
//                 List<Map<String, Object>> field4List = jspActionDao.queryList(f_cond);// 轮胎认证值list
//                 f_cond.put("tableName", "T_1827");
//                 List<Map<String, Object>> field5List = jspActionDao.queryList(f_cond);// ERP物料模版值list
//                 jsonObject.put("field4List", field4List);
//                 jsonObject.put("field5List", field5List);
//             }
//             // 万达专有 ---END---
//             //--edit by wangyk at 180703:新凤鸣物品系列查询出对应的下拉列表
//             else if ("XFM".equals(systemCode)) {
//                 Map<String, Object> f_cond = new HashMap<>();
//                 f_cond.put("cond", lbbm);
//                 f_cond.put("field", "field8");
//                 List<WlwlFieldSelectValue> fieldSelectValueList = wlwlFieldService.queryWlwlFieldSelectValueListByCond(f_cond);
//                 jsonObject.put("field8List", fieldSelectValueList);
//             }
//             //--edit by wangyk at 180703:end
//         }
//         return jsonObject;
//     }
//
//     @RequestMapping(value = "/getWlwlUpdateById", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject getWlwlUpdateById(HttpServletRequest request, WlwlUpdate update) {
//         Map<String, Object> updateResult = wlwlUpdateService.getWlwlUpdateById(update);
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("wlwlupd", updateResult);
//         // 可配置物料字段
//         Map<String, Object> field_cond = new HashMap<>();
//         field_cond.put("sfbdxs", "1");
//         List<WlwlField> fieldList = wlwlFieldService.queryWlwlFieldByCond(field_cond);
//         jsonObject.put("fieldList", fieldList);
//         //--edit by wangyk at 180514:新凤鸣变更时，短描述也不需要40的限制，和申请一样。
//         String systemCode = sysParameterService.getSysParamValue("systemCode", "MDM");// 获取系统参数systemCode，如果返回值为空则默认返回值为"MDM"
//         jsonObject.put("systemCode", systemCode);
//         return jsonObject;
//     }
//
//     @RequestMapping(value = "/bgSubmit", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject bgSubmit(@RequestBody List<TjForm> forms, HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         List<TjForm> tjlst = new ArrayList<TjForm>();
//
//         String systemCode = sysParameterService.getSysParamValue("systemCode", "MDM");// 获取系统参数systemCode，如果返回值为空则默认返回值为"MDM"
//         String useOaWorkflow = sysParameterService.getSysParamValue("useOaWorkflow", "false");// 获取系统参数useOaWorkflow，如果返回值为空则默认返回值为"false"
//         // if ("WanDa".equals(systemCode) && "true".equals(useOaWorkflow)) {// 当前系统为中国万达主数据，工作流统一为万达集团OA工作流
//         //     ProcessWfService processwfservice = new ProcessWfService();
//         //     tjlst = processwfservice.submitForWl2OaWorkflow(forms);
//         // } else {
//         tjlst = workFlowService.submitFlowElse(forms);
//         // }
//         // List<String> mtj = new ArrayList<String>();//提交前校验未通过，未被允许提交
//         List<String> fails = new ArrayList<String>();// 发起流程失败的
//         List<String> ends = new ArrayList<String>();// 未找到配置的流程
//         int flowSuccCount = 0;
//         List<String> idList = new ArrayList<String>();
//         for (int i = 0; i < tjlst.size(); i++) {
//             TjForm tjfrom = tjlst.get(i);
//             RunState runState = tjfrom.getRunState();
//             switch (runState) {
//                 case RUNNING:
//                     flowSuccCount++;
//                     idList.add(tjfrom.getDataId());
//                     break;
//                 case ERROR:
//                     fails.add(tjfrom.getDataId());
//                     break;
//                 default:
//                     break;
//             }
//
//         }
//
//         // 更新导入表的状态为待审核
//         if (!StringUtils.isEmpty(idList)) {
//             Map<String, Object> cond = new HashMap<>();
//             cond.put("state", 5);
//             cond.put("idList", idList);
//             wlwlUpdateService.updateWlwlUpdate(cond);
//             SysLogUtil.insertLog("提交物料变更" + "[" + idList + "]",
//                     SysLogEnum.WL_WL.getCode(), SysLogEnum.BJ.getCode(), request);
//         }
//
//         StringBuffer buffer = new StringBuffer();
//         if (!StringUtils.isEmpty(fails)) {
//             buffer.append("<br/>发起流程失败：" + StringUtil.arrayToStringBySplit(fails, " "));
//         }
//         if (!StringUtils.isEmpty(ends)) {
//             buffer.append("<br/>未指定有效流程：" + StringUtil.arrayToStringBySplit(ends, ","));
//         }
//         jsonObject.put("success", true);
//         jsonObject.put("flowSuccCount", flowSuccCount);
//         jsonObject.put("msg", buffer.toString());
//
//         return jsonObject;
//     }
//
//     //物料长描述变更 校验+提交方法
//     @RequestMapping(value = "/wlQcUpdateCheckAndSubmit", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject wlQcUpdateCheckAndSubmit(HttpServletRequest request) {
//         String lbbms = request.getParameter("lbbms");
//         String ids = request.getParameter("ids");
//         JSONObject jsonObject = new JSONObject();
//         boolean success_check = false;// 标记校验是否执行成功
//         boolean success_submit = false;// 标记提交是否执行成功JSONObject
//         String msg_check = "3";// 物料校验错误描述，默认为全部通过
//         String msg_submit = "";// 物料提交错误描述
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         // 1.物料校验
//         if (!StringUtils.isEmpty(lbbms)) {
//             // 得到当前批次提交数据的小类 --- 去重
//             Map<String, String> lbbm_map = new HashMap<String, String>();
//             for (String s : lbbms.split(","))
//                 lbbm_map.put(s, s);
//             Iterator<String> it = lbbm_map.keySet().iterator();
//             // 校验每个小类下的数据
//             while (it.hasNext()) {
//                 Map<String, Object> cond = new HashMap<>();
//                 cond.put("lbbm", it.next());
//                 cond.put("userid", user.getUserId());
//                 String result = wlwlUpdateService.wlQcUpdateCheckout(cond);
//                 if (!"3".equals(result))
//                     msg_check = "1";
//             }
//             success_check = true;
//         } else {
//             msg_check = "未指定具体小类！";
//         }
//         // 2.物料提交
//         if (success_check) {
//             Map<String, Object> sub_res = wlQcUpdSubmit(ids);
//             success_submit = (Boolean) sub_res.get("success_submit");
//             msg_submit = (String) sub_res.get("msg_submit");
//             jsonObject.put("flowSuccCount", (Integer) sub_res.get("flowSuccCount"));// 成功提交物料数量
//         }
//         jsonObject.put("success_check", success_check);
//         jsonObject.put("success_submit", success_submit);
//         jsonObject.put("msg_check", msg_check);
//         jsonObject.put("msg_submit", msg_submit);
//         return jsonObject;
//     }
//
//     /*物料长描述变更提交*/
//     public Map<String, Object> wlQcUpdSubmit(String ids) {
//         Map<String, Object> sub_res = new HashMap<>();
//         if (!StringUtils.isEmpty(ids)) {
//             Map<String, Object> cond = new HashMap<>();
//             cond.put("state", "3");
//             cond.put("operationtype", "3");
//             cond.put("idList", spaceToList(ids));
//             List<WlwlUpdate> wlUpdates = wlwlUpdateDao.bianGengWlwlUpdate(cond);
//             List<TjForm> forms = new ArrayList<TjForm>();
//             if (!StringUtils.isEmpty(wlUpdates)) {
//                 for (int i = 0; i < wlUpdates.size(); i++) {
//                     TjForm tjForm = new TjForm();
//                     tjForm.setDataId(wlUpdates.get(i).getId());
//                     tjForm.setOperType("update");
//                     tjForm.setTableName("WL_WL");
//                     tjForm.setDataType(wlUpdates.get(i).getLbbm().substring(0, 2));
//                     forms.add(tjForm);
//                 }
//             }
//             if (forms.size() > 0) {
//                 List<TjForm> tjlst = new ArrayList<TjForm>();
//                 String systemCode = sysParameterService.getSysParamValue("systemCode", "MDM");// 获取系统参数systemCode，如果返回值为空则默认返回值为"MDM"
//                 String useOaWorkflow = sysParameterService.getSysParamValue("useOaWorkflow", "false");// 获取系统参数useOaWorkflow，如果返回值为空则默认返回值为"false"
//                 // if ("WanDa".equals(systemCode) && "true".equals(useOaWorkflow)) {// 当前系统为中国万达主数据，工作流统一为万达集团OA工作流
//                 //     ProcessWfService processwfservice = new ProcessWfService();
//                 //     tjlst = processwfservice.submitForWl2OaWorkflow(forms);
//                 // } else {
//                 tjlst = workFlowService.submitFlowElse(forms);
//                 // }
//                 // List<String> mtj = new ArrayList<String>();//提交前校验未通过，未被允许提交
//                 List<String> fails = new ArrayList<String>();// 发起流程失败的
//                 List<String> ends = new ArrayList<String>();// 未找到配置的流程
//                 int flowSuccCount = 0;
//                 List<String> idList = new ArrayList<String>();
//                 for (int i = 0; i < tjlst.size(); i++) {
//                     TjForm tjfrom = tjlst.get(i);
//                     RunState runState = tjfrom.getRunState();
//                     switch (runState) {
//                         case RUNNING:
//                             flowSuccCount++;
//                             idList.add(tjfrom.getDataId());
//                             break;
//                         case ERROR:
//                             fails.add(tjfrom.getDataId());
//                             break;
//                         default:
//                             break;
//                     }
//                 }
//
//                 // 更新导入表的状态为待审核
//                 if (!StringUtils.isEmpty(idList)) {
//                     Map<String, Object> upd_cond = new HashMap<>();
//                     upd_cond.put("state", 5);
//                     upd_cond.put("idList", idList);
//                     wlwlUpdateService.updateWlwlUpdate(upd_cond);
//                 }
//
//                 StringBuffer buffer = new StringBuffer();
//                 if (!StringUtils.isEmpty(fails)) {
//                     buffer.append("发起流程失败：" + StringUtil.arrayToStringBySplit(fails, " "));
//                 }
//                 if (!StringUtils.isEmpty(ends)) {
//                     buffer.append("未指定有效流程：" + StringUtil.arrayToStringBySplit(ends, ","));
//                 }
//                 if (!StringUtils.isEmpty(fails) || !StringUtils.isEmpty(ends)) {
//                     sub_res.put("success_submit", false);
//                 } else {
//                     sub_res.put("success_submit", true);
//                 }
//                 sub_res.put("msg_submit", "无有效可提交数据！");
//                 sub_res.put("flowSuccCount", flowSuccCount);
//                 sub_res.put("msg_submit", buffer.toString());
//
//             } else {
//                 sub_res.put("success_submit", false);
//                 sub_res.put("msg_submit", "该类别下无有效可提交数据！");
//             }
//         }
//         return sub_res;
//     }
//
//
//     @ResponseBody
//     @RequestMapping(value = "/deleteWlwlUpdateByIdS", method = RequestMethod.POST)
//     public ResultObject deleteWlwlUpdateByIdS(HttpServletRequest request) {
//         String ids = request.getParameter("ids");
//         if (ids == null || "".equals(ids))
//             return null;
//         Map<String, Object> map = new HashMap<>();
//         map.put("idList", ids.split(","));
//         int ret = wlwlUpdateService.deleteWlwlUpdateByIdS(map);
//         int f = ret > 0 ? ret : 0;
//         //记录日志
//         SysLogUtil.insertLog("删除物料变更[" + ids + "]",
//                 SysLogEnum.WL_WL.getCode(), SysLogEnum.SC.getCode(), request);
//         ResultObject result = new ResultObject(f, "成功删除" + f + "条数据", "删除失败");
//         return result;
//     }
//
//     @RequestMapping(value = "/editWlwlUpdate", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject editWlwlUpdate(HttpServletRequest request) {
//         Map<String, Object> paramMap = RequestUtils.paramToMap(request);
//         paramMap.put("state", "3");
//         //--edit by wangyk at 180525:增加一个fromPage参数，用于控制mybatis配置文件关于配置字段的控制逻辑.
//         paramMap.put("fromPage", "yes");
//         JSONObject jsonObject = new JSONObject();
//         int count = wlwlUpdateService.updateWlwlUpdate(paramMap);
//         boolean suc = false;
//         if (count == 1) {
//             suc = true;
//         }
//         jsonObject.put("success", suc);
//         SysLogUtil.insertLog("编辑物料变更",
//                 SysLogEnum.WL_WL.getCode(), SysLogEnum.BJ.getCode(), request);
//         return jsonObject;
//     }
//
//     /**
//      * 导出模板
//      *
//      * @param modelId
//      * @param tableName
//      * @return
//      */
//     @RequestMapping(value = "exprotQTTemplate", method = RequestMethod.GET)
//     @ResponseBody
//     public String exprotQTTemplate(HttpServletResponse response, HttpServletRequest request) {
//
//         String path = IoUtil.getTemplatePath();
//         String fileName = TemplateName.WL_DJHD_TEMPLATE;// 服务器上存的文件名
//         String uploadFileName = "物料批量冻结活动模板";// 给用户下载看到的文件名
//         ExportUtil.exportTemplate(path, fileName, uploadFileName, response);
//         /*
//          * InputStream inStream = null; String fileName = null; OutputStream
//          * outStream = null; try { String path =
//          * Thread.currentThread().getContextClassLoader
//          * ().getResource("").toString(); path=path.replace('/', '\\'); // 将/换成\
//          * path=path.replace("classes\\", ""); //去掉class\
//          * path=path.replace("file:\\", ""); //file:\ path +=
//          * "doc\\dataTemplate"; response.setCharacterEncoding("UTF-8");
//          * response.setContentType("application/vnd.ms-excel"); fileName =
//          * "物料批量冻结活动模板.xlsx"; response.addHeader("Content-Disposition",
//          * "attachment;filename=" + URLEncoder.encode(fileName,"UTF-8")); File
//          * file = new File(path,fileName); inStream = new FileInputStream(file);
//          * byte[] bytes = new byte[1024]; int len; outStream =
//          * response.getOutputStream(); while((len = inStream.read(bytes)) != -1
//          * ) { outStream.write(bytes, 0, len); } outStream.flush();
//          * outStream.close(); outStream = null; response.flushBuffer(); } catch
//          * (IOException e) { e.printStackTrace(); } finally { if(inStream !=
//          * null){ try{inStream.close();} catch(Exception e){} } }
//          */
//         return null;
//     }
//
//     /**
//      * 导入物料代码(批量冻结、解冻)
//      *
//      * @param modelId
//      * @param tableName
//      * @return
//      */
//     @RequestMapping(value = "excelImport", method = RequestMethod.POST)
//     @ResponseBody
//     public ResultObject excelImport(HttpServletResponse response, HttpServletRequest request) {
//         ExcelUtil eu = new ExcelUtil();
//         ResultObject result = null;
//         String wlbm = "";
//         String operType = "";
//         String errorMsg = "";
//         String fileName = "";
//         try {
//             MultipartHttpServletRequest mulRequest = (MultipartHttpServletRequest) request;
//             MultipartFile file = mulRequest.getFile("excel");
//             // 获取路径
//             String ctxPath = request.getSession().getServletContext().getRealPath("/") + "upload" + File.separator;
//             // 创建文件
//             File dirPath = new File(ctxPath);
//             if (!dirPath.exists()) {
//                 dirPath.mkdir();
//             }
//             File uploadFile = new File(ctxPath + file.getOriginalFilename());
//
//             // 保存上传的文件到服务器发布项目中的upload文件夹下
//             FileCopyUtils.copy(file.getBytes(), uploadFile);
//
//             Workbook book = excelImport.getWorkbook(uploadFile);
//             Sheet sheet = book.getSheetAt(0);
//             Cell cellTextTemp = null;
//             if (null != sheet && sheet.getLastRowNum() >= 1) {
//                 for (int rIdx = 1; rIdx <= sheet.getLastRowNum(); rIdx++) {
//                     if (null == sheet.getRow(rIdx)) {
//                         break;
//                     }
//                     operType = "";
//                     wlbm = "";
//                     cellTextTemp = sheet.getRow(rIdx).getCell(0);
//                     if (null != cellTextTemp) {
//                         cellTextTemp.setCellType(Cell.CELL_TYPE_STRING);
//                         wlbm = cellTextTemp.toString().trim();
//                     }
//                     cellTextTemp = sheet.getRow(rIdx).getCell(1);
//                     if (null != cellTextTemp) {
//                         cellTextTemp.setCellType(Cell.CELL_TYPE_STRING);
//                         operType = cellTextTemp.toString().trim();
//                     }
//                     // 校验数据有效性
//                     errorMsg = checkImportData(wlbm, operType);
//                     if ("".equals(errorMsg)) {
//                         Map<String, Object> cond = new HashMap<>();
//                         cond.put("operationtype", operType);
//                         cond.put("wlbm", wlbm);
//                         int count = wlwlUpdateService.insertWlwlUpdate(cond);
//                         if (count > 0) {
//                             result = new ResultObject("true", "导入成功!");
//                         }
//                     } else {
//                         fileName = "wldjhdImportError" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".txt";
//                         try {
//                             ExportUtil.errTxt(errorMsg.toString(), fileName);
//                         } catch (IOException e) {
//                             // TODO Auto-generated catch block
//                             e.printStackTrace();
//                         }
//                         /*
//                          * try { fileName="物料批量冻结活动模板"+"@@@@"+new
//                          * SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new
//                          * Date())+".txt"; eu.errTxt(errorMsg.toString(),
//                          * fileName); } catch (IOException e) {
//                          * e.printStackTrace(); }
//                          */
//                         result = new ResultObject("false", fileName);
//                     }
//                 }
//             } else {
//                 fileName = "wldjhdImportError" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()) + ".txt";
//                 try {
//                     ExportUtil.errTxt("导入文件中无数据", fileName);
//                 } catch (IOException e) {
//                     // TODO Auto-generated catch block
//                     e.printStackTrace();
//                 }
//                 /*
//                  * try { fileName="物料批量冻结活动模板"+"@@@@"+new
//                  * SimpleDateFormat("yyyyMMddHHmmssSSS") .format(new
//                  * Date())+".txt"; eu.errTxt("导入文件中无数据", fileName); } catch
//                  * (IOException e) { e.printStackTrace(); }
//                  */
//                 result = new ResultObject("false", fileName);
//             }
//         } catch (EncryptedDocumentException e) {
//             e.printStackTrace();
//         } catch (InvalidFormatException e) {
//             e.printStackTrace();
//         } catch (IOException e1) {
//             e1.printStackTrace();
//         }
//         return result;
//     }
//
//     private String checkImportData(String wlbm, String operType) {
//         String errorMsg = "";
//         if ("".equals(wlbm) && "".equals(operType)) {
//             return errorMsg;
//         }
//         if ("".equals(wlbm) || "".equals(operType)) {
//             errorMsg += "物料编码和操作说明不能为空";
//             return errorMsg;
//         }
//         if (!"1".equals(operType) && !"2".equals(operType)) {
//             errorMsg += "操作说明值不正确";
//             return errorMsg;
//         }
//         Wlwl wlwl = wlwlService.getWlwlByWlbm(wlbm);
//         if (null == wlwl) {
//             errorMsg += "物料编码不存在";
//             return errorMsg;
//         } else {
//             if ("1".equals(wlwl.getStatus()) && "1".equals(operType)) {
//                 errorMsg += "该物料编码已经是活动状态，无法活动";
//                 return errorMsg;
//             }
//             if ("0".equals(wlwl.getStatus()) && "2".equals(operType)) {
//                 errorMsg += "该物料编码已经是冻结状态，无法冻结";
//                 return errorMsg;
//             }
//         }
//         return errorMsg;
//     }
//
//     /*
//      * 2017-06-29 jyh 错误日志下载抽取至LogErrorsController中
//      */
//
//     /**
//      * *
//      * <p>
//      * Title: 导入数据，错误文档
//      * </p>
//      * <p>
//      * Company:@param response
//      * <p>
//      * Company:@param request
//      * </p>
//      */
//     /*
//      * @RequestMapping(value = "downLoadErr", method = RequestMethod.POST)
//      *
//      * @ResponseBody public void downLoadErr(HttpServletResponse
//      * response,HttpServletRequest request){ String fileName =
//      * request.getParameter("err_fileName"); String path =
//      * WlwlUpdateController.class.getProtectionDomain().getCodeSource()
//      * .getLocation().getPath(); String file=path.substring(1,
//      * path.indexOf("/WEB-INF/classes"))+"/error_text/"+fileName;
//      * System.out.println("file:"+file); try { InputStream inStream = new
//      * FileInputStream(file);
//      * if(request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0){
//      * fileName = URLEncoder.encode(fileName, "UTF-8");//IE浏览器 }else{ fileName =
//      * new String(fileName.getBytes("UTF-8"), "ISO8859-1");//firefox浏览器 }
//      * response.reset(); response.setCharacterEncoding("UTF-8");
//      * response.setContentType("application/octet-stream; charset=UTF-8");
//      * response.addHeader("Content-Disposition", "attachment;filename=\"" +
//      * fileName + "\""); // 循环取出流中的数据 byte[] b = new byte[100]; int len;
//      * OutputStream output=response.getOutputStream(); while ((len =
//      * inStream.read(b)) > 0) output.write(b, 0, len);
//      *
//      * output.flush(); output.close(); inStream.close(); } catch
//      * (FileNotFoundException e) { e.printStackTrace(); } catch
//      * (UnsupportedEncodingException e) { } catch (IOException e) {
//      * e.printStackTrace(); } }
//      */
//     @RequestMapping(value = "/insertQtData", method = RequestMethod.POST)
//     @ResponseBody
//     public ResultObject insertQtData(HttpServletRequest request) {
//         String operationtype = request.getParameter("operationType");
//         String wlbms = request.getParameter("wlbms");
//         List<String> lst = StringUtil.toList(wlbms);
//         String state = "0";
//         if (!"0".equals(operationtype))
//             state = "3";
//         ResultObject result = null;
//         int count = 0;
//         Map<String, Object> cond = new HashMap<>();
//         cond.put("operationtype", operationtype);
//         cond.put("state", state);
//         for (String wlbm : lst) {
//             cond.put("wlbm", wlbm);
//             count = wlwlUpdateService.insertWlwlUpdate(cond);
//         }
//         int f = count > 0 ? 1 : 0;
//         //记录日志
//         SysLogUtil.insertLog("编辑物料代码[" + wlbms + "]",
//                 SysLogEnum.WL_WL.getCode(), SysLogEnum.BJ.getCode(), request);
//         result = new ResultObject(f, "操作成功", "操作失败");
//         return result;
//     }
//
//     @RequestMapping(value = "/showUpdateHistory", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject showUpdateHistory(HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         String wlbm = request.getParameter("wlbm");
//         List<WlwlUpdate> updList;
//         try {
//             updList = wlwlUpdateService.getWlwlUpdateByWlbm(wlbm);
//             jsonObject.put("updList", updList);
//             jsonObject.put("success", true);
//         } catch (Exception e) {
//             jsonObject.put("success", false);
//             jsonObject.put("msg", "获取修改历史数据失败!");
//         }
//         return jsonObject;
//     }
//
//     /**
//      * 根据选择的待修改长描述的物料，往各相关的变更表中写入数据
//      *
//      * @return
//      * @author jyh
//      * @date 2018-01-17
//      */
//     @RequestMapping(value = "/copyData", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject copyData(HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         //String operationtype = request.getParameter("operationType");
//         String wlbms = request.getParameter("wlbms");
//         String wlDrIds = request.getParameter("wlDrIds");//复制附件信息用
//         // 获取session中用户
//         SysUser user = ShiroSessionUtils.getSessionSysUser(ConstantBean.CURRENT_SESSION_USER);
//         Map<String, Object> cond = new HashMap<>();
//         cond.put("wlbms", wlbms);
//         cond.put("wlDrIds", wlDrIds);//复制附件信息用
//         cond.put("userid", user.getUserId());
//         cond.put("bg_type", "3");//中文长描述变更
//         boolean success = wlwlUpdateService.insertWlUpdateDataForQcModify(cond);
//         jsonObject.put("success", success);
//         return jsonObject;
//     }
//
//     @RequestMapping(value = "/updateWlWlQc", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject updateWlWlQc(HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         Map<String, Object> paramMap = RequestUtils.paramToMap(request);
//         String shrEdit = request.getParameter("shrEdit");
//         String wlTzlUpdStr = request.getParameter("wlTzlUpdStr");
//         String wlLanUpdStr = request.getParameter("wlLanUpdStr");
//         if (!StringUtils.isEmpty(wlTzlUpdStr)) {
//             if (!StringUtils.trimToEmpty(shrEdit).equals("1")) {
//                 paramMap.put("state", "0");
//                 paramMap.put("errtext", null);
//             }
//             wlwlUpdateService.updateWlWlQc(paramMap, wlTzlUpdStr, wlLanUpdStr, request);
//             jsonObject.put("success", true);
//         } else {
//             jsonObject.put("success", false);
//             jsonObject.put("msg", "特征量数据为空");
//         }
//         return jsonObject;
//     }
//
//     public static List<String> spaceToList(String array) {
//         ArrayList<String> list = new ArrayList<String>();
//         if (array != null) {
//             for (String string : array.split(" ")) {
//                 list.add(string);
//             }
//         }
//         return list;
//     }
//
//     @RequestMapping(value = "/getMaxUpdIdByWlDrId", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject getMaxUpdIdByWlDrId(HttpServletRequest request) {
//         JSONObject jsonObject = new JSONObject();
//         String wldrid = request.getParameter("wldrid");
//         String maxid = wlwlUpdateService.getMaxUpdIdByWlDrId(wldrid);
//         if (!StringUtils.isEmpty(maxid)) {
//             jsonObject.put("success", true);
//             jsonObject.put("msg", maxid);
//         } else {
//             jsonObject.put("success", false);
//             jsonObject.put("msg", "");
//         }
//         return jsonObject;
//     }
//
//     @SuppressWarnings("rawtypes")
//     @RequestMapping(value = "/getWlwlUpdatePageByWlbm", method = RequestMethod.POST)
//     @ResponseBody
//     public JSONObject getWlwlUpdatePageByWlbm(HttpServletRequest request) {
//         Map<String, Object> paramMap = RequestUtils.paramToMap(request);
//         PageInfo pageInfo = wlwlUpdateService.getWlwlUpdatePageByWlbm(paramMap);
//         List l = pageInfo.getList();
//         JSONObject jsonObject = new JSONObject();
//         jsonObject.put("rows", l);
//         jsonObject.put("total", pageInfo.getTotal());
//         return jsonObject;
//     }
//
//     private void filterField(List<WlwlField> fieldList, String lbbm, WlLbmb wlLbmb, String systemCode) {
//         //--edit by wangyk at 180410:新凤鸣定制化需求，07大类模板为产成品的展示物品系列属性，半成品模板不展示物品系列属性
//         if (!StringUtils.isEmpty(wlLbmb) && "XFM".equals(systemCode) && lbbm.startsWith("07")) {
//             String mbName = wlLbmb.getMbname();
//             if (mbName.indexOf("半成品") != -1) {
//                 Iterator<WlwlField> iter = fieldList.iterator();
//                 while (iter.hasNext()) {
//                     WlwlField item = iter.next();
//                     String field = item.getField();
//                     if ("field8".equals(field)) {
//                         iter.remove();
//                     }
//                 }
//             }
//         }
//     }
// }
